if (files.cwd().endsWith("脚本")) {
  let _require = require;
  require = function (path) {
    if (path.startsWith("./")) {
      path = path.replace("./", "");
    }
    path = files.cwd() + "/gdt_hb/" + path;
    return _require(path);
  }
}


auto.waitFor()
var utils = require("./utils.js");


var storage = storages.create("xiangxiangyuedu");

var time = random(2000, 3000)
function launchAppEnhance(app_name) {
  let thread = threads.start(function () {
    toastLog("检查是否有打开权限!");
    while (true) {
      var allow = text("允许").findOne(5000);
      if (allow) {
        sleep(1000)
        toastLog("发现允许授权!");
        allow.click();
        sleep(1000);
        thread.interrupt();
        break;
      }
    }
  });
  sleep(1000);
  var result = launchApp(app_name);
  sleep(3000);
  thread.interrupt();
  return result;
}

function swip_up() {
  var w = device.width
  var h = device.height

  function bezier_curves(cp, t) {
    cx = 3.0 * (cp[1].x - cp[0].x);
    bx = 3.0 * (cp[2].x - cp[1].x) - cx;
    ax = cp[3].x - cp[0].x - cx - bx;
    cy = 3.0 * (cp[1].y - cp[0].y);
    by = 3.0 * (cp[2].y - cp[1].y) - cy;
    ay = cp[3].y - cp[0].y - cy - by;

    tSquared = t * t;
    tCubed = tSquared * t;
    result = { "x": 0, "y": 0 };
    result.x = (ax * tCubed) + (bx * tSquared) + (cx * t) + cp[0].x;
    result.y = (ay * tCubed) + (by * tSquared) + (cy * t) + cp[0].y;
    return result;
  };


  function sml_move(qx, qy, zx, zy, time) {
    //仿真随机带曲线滑动: qx, qy, zx, zy, time 代表起点x,起点y,终点x,终点y,过程耗时单位毫秒
    var xxy = [time];
    var point = [
      { "x": qx, "y": qy },
      { "x": random(qx - 100, qx + 100), "y": random(qy, qy + 50) },
      { "x": random(zx - 100, zx + 100), "y": random(zy, zy + 50) },
      { "x": zx, "y": zy }
    ];
    for (let i = 0; i < 1; i += 0.08) {
      xxyy = [parseInt(bezier_curves(point, i).x), parseInt(bezier_curves(point, i).y)]
      xxy.push(xxyy);
    }
    gesture.apply(null, xxy);
  }

  sml_move(w / 2, h * 0.8 + h * random() * 0.1, w / 2, h * 0.15, 200 + 600 * random());
}

function closeAdWebView(time) {
  if(!time){
    time = 4000;
  }
  console.log("closeAdWebView:", time)
  var adWebView = className("com.tencent.tbs.core.webkit.WebView").depth(6).drawingOrder(0).findOne(time);
  if (adWebView) {
    back();
  }
}

// 点击控件坐标，控件的clickbale为false的时候
function 点击控件(x) {
  var weight = x.bounds()
  click(weight.centerX(), weight.centerY())
}

function login() {
  var 立即登录 = text('立即登录').findOne(20000)
  if (立即登录) {
    toastLog('在登录界面，尝试登录')
    var 手机号 = text('请输入手机号码').clickable().findOne(5000)
    if (手机号) {
      sleep(time)
      手机号.click()
      sleep(time)
      if (device.model == 'Redmi 8A') {
        click(random(96, 663), random(642, 729))
      }
      if (device.model == 'MI 5X') {
        click(random(165, 800), random(493, 608))
      }
    }
    sleep(time)
    立即登录.click()
  } else {
    toastLog('已经是登录状态')
    sleep(time)
  }
}

function task() {
  var 首页 = text('首页').findOne()
  if (首页) {
    var 倒计时 = id('com.aoyindsptv.phonelive:id/img_adlogo').findOne(5000)
    if (倒计时) {
      let index = 1;
      let count = 50;
      while (index <= count) {
        var random_time = random(6000, 8000);
        toastLog("观看" + "第" + index + "/" + count + "个视频中...");
        sleep(2000)
        toastLog("预计时长" + (random_time / 1000) + "秒~");
        sleep(random_time);
        index++;
        swip_up()
        var 领钻石 = text('看广告领钻石').findOne(1000)
        
        if (领钻石) {
          var finalActivity = currentActivity();
          领钻石.parent().click()
          //可能会出现广告无法加载情况
          var avatar = id('com.aoyindsptv.phonelive:id/avatar').findOne(1000)
          if (!avatar) {
            toastLog('当前是在广告界面')
            utils.waitAdvert(finalActivity);
            break
          }
        }
      }
    } else {
      toastLog('您已经完成观看视频的任务')
      sleep(time)
    }

    utils.updateAppProgress(20);


  } else {
    toastLog('没进入首页，任务运行失败')
  }
}

function swipeBottom() {
  var w = device.width;
  var h = device.height;
  var centerX = w / 2;
  var centerY = h / 2;
  swipe(30, centerY + 400, 30, centerY - 400, 200);
  var 拒绝 = text("拒绝").findOne(800)
  if (拒绝) {
    拒绝.click()
  }
}
function swipeTop() {
  var w = device.width;
  var h = device.height;
  var centerX = w / 2;
  var centerY = h / 2;
  swipe(30, centerY - 400, 30, centerY + 400, 200);
  var 拒绝 = text("拒绝").findOne(800)
  if (拒绝) {
    拒绝.click()
  }
}



//每日任务
function 等待阅读完毕() {

  var time = textEndsWith("前").findOne();

  utils.realClick(time);
  sleep(8000);
  swip_up();
  sleep(2000);
  var count = 0;
  //开始上滑 下滑 积攒进度条 进度条消失后 代表任务已经完成
  var swipeCount = 1;
  while (true) {
    var close = id("tt_insert_dislike_icon_img").findOne(200);
    if (close) {
      count=0;
      toast("发现广告进行关闭");
      close.click();
      sleep(500);
    }
    close = className("android.widget.ImageView").clickable().depth(4).drawingOrder(2).findOne(200);
    if (close) {
      count=0;
      toast("发现广告进行关闭");
      close.click();
      sleep(500);
    }

    if (id("iv_red_pack").findOne(200)) {
      count=0;
      toast("还未完成阅读任务 继续滑动");
      sleep(1000);
      if (swipeCount % 2 == 0) {
        // swipeBottom();
        swip_up();
      } else {
        swipeTop();
      }
      swipeCount++;
    } else {
      toast("检测到 阅读进度条已经消失", count);
      count++;
      if (count >= 3) {
        toast("已经完成任务");
        break;
      }
    }
    sleep(800);
    //进行滑动
  }

  back();
  sleep(1000);

  back();
  sleep(1000);


}
function 点击每日任务(){
  var 每日任务 = text("每日任务").findOne();
  每日任务.parent().click();
  closeAdWebView();
}
function myTask2() {

  var w = device.width;
  var h = device.height;
  // click(w / 2, h / 2);
  waitForActivity("com.aoyindsptv.main.activity.MainActivity")
 
  utils.swip_up();
  sleep(1000)
  utils.swip_down();

  closeAdWebView();
  //每日任务 
  var 我的 = text("我的").findOne(60000);
  if (我的) {
    utils.realClick(我的);
    closeAdWebView();
    sleep(1000);
    点击每日任务();
    sleep(1000);



    //看视频4次
    toastLog("开始第一个任务")

    var 激励视频 = utils.near(text("做任务 得钻石").findOne(), textStartsWith("激励视频"))
    if(!激励视频){
      toastLog('激励视频 未找到');
      return ;
    }
    var 激励视频_去完成 = utils.near(激励视频, text("去完成"), 2);
    if(!激励视频_去完成){
      toastLog('激励视频_去完成  未找到');
      return ;
    }

    while (激励视频_去完成) {
      var finalActivity = currentActivity();
      utils.realClick(激励视频_去完成);
      utils.waitAdvert(finalActivity);
      sleep(2000);

      if(currentActivity() === finalActivity){
        //判断是否有弹窗广告
        var _adClose = className("android.widget.ImageView").clickable().depth(4).drawingOrder(2).findOne(2000);
        if(_adClose){
          _adClose.click();
          sleep(500);
        }
      }
      激励视频 = utils.near(text("做任务 得钻石").findOne(), textStartsWith("激励视频"))
      激励视频_去完成 = utils.near(激励视频, text("去完成"), 2);
    }


    // for (var i = 1; i <= 4; i++) {
    //     var first = textEndsWith("完成").find()[0];
    //     if(first.text() == "已完成"){
    //         break;
    //     }
    //     var finalActivity = currentActivity();
    //     textEndsWith("完成").find()[0].click();
    //     // 等待视频播放完毕();
    //     sleep(5000);
    //     utils.waitAdvert(finalActivity);
    //     sleep(3000);
    // }
    toastLog("结束第一个任务")
    utils.updateAppProgress(30);
    toastLog("开始第二个任务")
    //阅读任务1次

    var 阅读任务 = utils.near(text("做任务 得钻石").findOne(), textStartsWith("阅读任务"))
    if(!阅读任务){
      toastLog('阅读任务');
      return ;
    }
    var 阅读任务_去完成 = utils.near(阅读任务, text("去完成"), 2);
    if(!阅读任务_去完成){
      toastLog('阅读任务_去完成');
      return ;
    }


    while (阅读任务_去完成) {
      utils.realClick(阅读任务_去完成);
      sleep(4000);
      等待阅读完毕();
      sleep(2000);
      //进行回退
      阅读任务 = utils.near(text("做任务 得钻石").findOne(), textStartsWith("阅读任务"))
      阅读任务_去完成 = utils.near(阅读任务, text("去完成"), 2);
    }


    // textEndsWith("完成").find()[1].click();
    // 等待阅读完毕();

    toastLog("结束第二个任务")
    utils.updateAppProgress(40);



    sleep(3000);

    var 领取任务奖励 = utils.near(text("做任务 得钻石").findOne(), id("get_task"))
    if(!领取任务奖励){
      toastLog('领取任务奖励');
      return ;
    }
    var 开始按钮 = 领取任务奖励;//点击我知道了 弹窗开始按钮 和该按钮是在同一个位置 因此可以这样搞
    if (领取任务奖励.enabled()) {
      utils.realClick(领取任务奖励);

      var 我知道了 = text("我知道了").findOne(60000);
      我知道了 && 我知道了.click();
      sleep(20000);
      utils.realClick(开始按钮);
      sleep(10000);
      back();


      点击每日任务();//需要重新回到每日任务

      // var w = device.width;
      // var h = device.height;
      // recents();
      // sleep(2000);
      // recents();
      // var 我不要了 = text("我不要了").findOne(60000);
      // if (我不要了) {
      //   sleep(2000);
      //   我不要了.click();
      //   sleep(5000);
      // }
    }
    utils.updateAppProgress(60);
    //看视频4次
    toastLog("开始第三个任务")
    激励视频 = utils.near(text("做任务 得贡献值").findOne(), textStartsWith("激励视频"))
    if(!激励视频){
      toastLog('激励视频');
      return ;
    }
    激励视频_去完成 = utils.near(激励视频, text("去完成"), 2);
    if(!激励视频_去完成){
      toastLog('激励视频_去完成');
      return ;
    }
    while (激励视频_去完成) {
      var finalActivity = currentActivity();
      utils.realClick(激励视频_去完成);
      utils.waitAdvert(finalActivity);
      sleep(2000);

      激励视频 = utils.near(text("做任务 得贡献值").findOne(), textStartsWith("激励视频"))
      激励视频_去完成 = utils.near(激励视频, text("去完成"), 2);
    }


    toastLog("结束第三个任务")
    utils.updateAppProgress(70);
    toastLog("开始第四个任务")
    //阅读任务1次

    var 阅读任务 = utils.near(text("做任务 得贡献值").findOne(), textStartsWith("阅读任务"))
    if(!阅读任务){
      toastLog('阅读任务');
      return ;
    }
    var 阅读任务_去完成 = utils.near(阅读任务, text("去完成"), 2);
    if(!激励视频_去完成){
      toastLog('激励视频_去完成');
      return ;
    }


    while (阅读任务_去完成) {
      utils.realClick(阅读任务_去完成);
      sleep(4000);
      等待阅读完毕();
      sleep(2000);
      阅读任务 = utils.near(text("做任务 得贡献值").findOne(), textStartsWith("阅读任务"))
      var 阅读任务_去完成 = utils.near(阅读任务, text("去完成"), 2);
    }


    // textEndsWith("完成").find()[1].click();
    // 等待阅读完毕();

    toastLog("结束第四个任务")
    utils.updateAppProgress(80);
    sleep(3000);



    领取任务奖励 = utils.near(text("做任务 得贡献值").findOne(), id("get_task"))
    if(!激励视领取任务奖励频_去完成){
      toastLog('激励视频领取任务奖励_去完成');
      return ;
    }

    if (领取任务奖励.enabled()) {
      utils.realClick(领取任务奖励);

      var 我知道了 = text("我知道了").findOne(60000);
      我知道了 && 我知道了.click();
      sleep(20000);
      utils.realClick(开始按钮);
      sleep(10000);
      back();
    }    
    toast("执行完毕");
  } else {
    log("寻找我的按钮失败");
  }
}

function main() {
  var open_app = launchAppEnhance("凹音短视频")
  if (open_app) {
    var thread_1 = threads.start(function () {
      toastLog("检查广告弹窗")
      while (true) {
        var widget = text("确定").findOne(2000);
        if (widget) {
          点击控件(widget)
        }
        // closeAdWebView(200);
        // sleep(1000);
      }
    })
    // login()
    task()
    // myTask()
    myTask2()
    thread_1.interrupt()
  } else {
    toastLog("凹音短视频打开失败，请确认是否安装并授权打开!");
  }
}


try {
  main();
  utils.updateAppProgress(100);
} catch (error) {
  toastLog(error);
}


storage.put("script_running_status", "end");